Telegram Group & Telegram Channel
🔰 Модуль enum: обзор

Модуль enum в Python используется для создания перечислений — объектов, которые упрощают работу с группами связанных константных значений. Это полезно для удобного различия значений без привязки к их конкретным значениям, например, при работе с параметрами конфигурации.

🟠 Создание перечислений с Enum и auto

Перечисления позволяют избежать ошибок с опечатками и делают код более читаемым.

Пример с конкретными значениями:
from enum import Enum

class TempUnit(Enum):
CELSIUS = "celsius"
FAHRENHEIT = "fahrenheit"

def get_temperature(city, unit):
return 18.0 if unit == TempUnit.CELSIUS else 64.4

print(get_temperature("Lisbon", TempUnit.CELSIUS)) # 18.0


Перечисления упрощают работу с значениями:
print(TempUnit.CELSIUS.name)  # CELSIUS
print(TempUnit.CELSIUS.value) # celsius


Для целочисленных значений можно использовать auto() для автоматической нумерации:
from enum import Enum, auto

class Weekday(Enum):
SUNDAY = auto()
MONDAY = auto()
TUESDAY = auto()
WEDNESDAY = auto()
THURSDAY = auto()
FRIDAY = auto()
SATURDAY = auto()


🟠 Строковые перечисления

Для строковых значений можно использовать StrEnum:
from enum import StrEnum

class TempUnit(StrEnum):
CELSIUS = "celsius"
FAHRENHEIT = "fahrenheit"

print(TempUnit.CELSIUS.capitalize()) # Celsius


Автоматическая строковая нумерация:
from enum import StrEnum, auto

class TempUnit(StrEnum):
CELSIUS = auto()
FAHRENHEIT = auto()

assert TempUnit.CELSIUS.value == "celsius"


🟠 Специализированные типы перечислений

Целочисленные перечисления с IntEnum:
from enum import IntEnum

class SomeIntegers(IntEnum):
ONE = 1
TWO = 2
THREE = 3

print(SomeIntegers.TWO + 1) # 3


Флаги с Flag для комбинирования флагов:
from enum import Flag, auto

class NotificationMethod(Flag):
IN_APP = auto()
PUSH = auto()
EMAIL = auto()
SMS = auto()

user_settings = NotificationMethod.IN_APP | NotificationMethod.PUSH
print(user_settings) # <NotificationMethod.IN_APP|PUSH: 3>


🟠 Утилиты для удобной работы с перечислениями

Проверка уникальности значений с помощью декоратора @unique:
from enum import Enum, unique

@unique
class EnumWithAliases(Enum):
ONE = 1
TWO = 2
THREE = 3
UNO = 1 # Ошибка, дублирующее значение


Проверка непрерывности значений с помощью декоратора @verify(CONTINUOUS):
from enum import Enum, verify, CONTINUOUS

@verify(CONTINUOUS)
class Nums(Enum):
THREE = 3
FOUR = 4
FIVE = 5
SIX = 6

@verify(CONTINUOUS)
class NumsHole(Enum):
THREE = 3
FOUR = 4
SIX = 6 # Ошибка, отсутствует 5


Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/pyproglib/6684
Create:
Last Update:

🔰 Модуль enum: обзор

Модуль enum в Python используется для создания перечислений — объектов, которые упрощают работу с группами связанных константных значений. Это полезно для удобного различия значений без привязки к их конкретным значениям, например, при работе с параметрами конфигурации.

🟠 Создание перечислений с Enum и auto

Перечисления позволяют избежать ошибок с опечатками и делают код более читаемым.

Пример с конкретными значениями:

from enum import Enum

class TempUnit(Enum):
CELSIUS = "celsius"
FAHRENHEIT = "fahrenheit"

def get_temperature(city, unit):
return 18.0 if unit == TempUnit.CELSIUS else 64.4

print(get_temperature("Lisbon", TempUnit.CELSIUS)) # 18.0


Перечисления упрощают работу с значениями:
print(TempUnit.CELSIUS.name)  # CELSIUS
print(TempUnit.CELSIUS.value) # celsius


Для целочисленных значений можно использовать auto() для автоматической нумерации:
from enum import Enum, auto

class Weekday(Enum):
SUNDAY = auto()
MONDAY = auto()
TUESDAY = auto()
WEDNESDAY = auto()
THURSDAY = auto()
FRIDAY = auto()
SATURDAY = auto()


🟠 Строковые перечисления

Для строковых значений можно использовать StrEnum:
from enum import StrEnum

class TempUnit(StrEnum):
CELSIUS = "celsius"
FAHRENHEIT = "fahrenheit"

print(TempUnit.CELSIUS.capitalize()) # Celsius


Автоматическая строковая нумерация:
from enum import StrEnum, auto

class TempUnit(StrEnum):
CELSIUS = auto()
FAHRENHEIT = auto()

assert TempUnit.CELSIUS.value == "celsius"


🟠 Специализированные типы перечислений

Целочисленные перечисления с IntEnum:
from enum import IntEnum

class SomeIntegers(IntEnum):
ONE = 1
TWO = 2
THREE = 3

print(SomeIntegers.TWO + 1) # 3


Флаги с Flag для комбинирования флагов:
from enum import Flag, auto

class NotificationMethod(Flag):
IN_APP = auto()
PUSH = auto()
EMAIL = auto()
SMS = auto()

user_settings = NotificationMethod.IN_APP | NotificationMethod.PUSH
print(user_settings) # <NotificationMethod.IN_APP|PUSH: 3>


🟠 Утилиты для удобной работы с перечислениями

Проверка уникальности значений с помощью декоратора @unique:
from enum import Enum, unique

@unique
class EnumWithAliases(Enum):
ONE = 1
TWO = 2
THREE = 3
UNO = 1 # Ошибка, дублирующее значение


Проверка непрерывности значений с помощью декоратора @verify(CONTINUOUS):
from enum import Enum, verify, CONTINUOUS

@verify(CONTINUOUS)
class Nums(Enum):
THREE = 3
FOUR = 4
FIVE = 5
SIX = 6

@verify(CONTINUOUS)
class NumsHole(Enum):
THREE = 3
FOUR = 4
SIX = 6 # Ошибка, отсутствует 5


Библиотека питониста #буст

BY Библиотека питониста | Python, Django, Flask


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/pyproglib/6684

View MORE
Open in Telegram


Библиотека питониста | Python Django Flask Telegram | DID YOU KNOW?

Date: |

Launched in 2013, Telegram allows users to broadcast messages to a following via “channels”, or create public and private groups that are simple for others to access. Users can also send and receive large data files, including text and zip files, directly via the app.The platform said it has more than 500m active users, and topped 1bn downloads in August, according to data from SensorTower.

Mr. Durov launched Telegram in late 2013 with his brother, Nikolai, just months before he was pushed out of VK, the Russian social-media platform he founded. Mr. Durov pitched his new app—funded with the proceeds from the VK sale—less as a business than as a way for people to send messages while avoiding government surveillance and censorship.

Библиотека питониста | Python Django Flask from ca


Telegram Библиотека питониста | Python, Django, Flask
FROM USA